GridFS MongoDB-এর একটি বিশেষ ফিচার যা বড় ফাইল (যেমন ইমেজ, ভিডিও, ডকুমেন্ট, বা অন্য কোনো বাইনারি ফাইল) সংরক্ষণের জন্য ব্যবহৃত হয়। MongoDB-এর সাধারণ ডকুমেন্ট স্টোরেজ সিস্টেম 16MB পর্যন্ত ডেটা সংরক্ষণ করতে সক্ষম, তবে GridFS বড় ফাইলগুলিকে ছোট ছোট অংশে (chunks) ভাগ করে এবং সেই অংশগুলো MongoDB তে সংরক্ষণ করে, ফলে কোনো সাইজের ফাইল স্টোর করা সম্ভব হয়।
GridFS মূলত ফাইল সিস্টেমের মতো কাজ করে, তবে MongoDB ডেটাবেসের মধ্যেই এই ফাইলগুলিকে সংরক্ষণ করা হয়, যা ফাইলগুলোর দ্রুত অ্যাক্সেস, সার্চ এবং অন্যান্য কার্যক্রম সহজ করে তোলে।
GridFS তে ফাইল দুটি মূল সংগ্রহে (collections) সংরক্ষিত হয়:
ফাইলটি GridFS এ আপলোড করা হলে, তা প্রথমে একটি metadata document হিসেবে fs.files
কালেকশনে স্টোর হয়। তারপর, ফাইলটি ছোট ছোট অংশে ভাগ হয়ে chunks কালেকশনে স্টোর করা হয়। প্রতিটি অংশের সাইজ সাধারণত 255KB হয়ে থাকে।
এভাবে MongoDB ফাইলের পুরো ডেটা সংরক্ষণ করে এবং যে কোনো সময় সেগুলো একত্রে পুনরুদ্ধার করতে পারে।
GridFS এ একটি ফাইল আপলোড করার জন্য MongoDB তে GridFS ক্লায়েন্ট ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Golang এবং MongoDB GridFS ব্যবহার করা হয়েছে।
Golang Example:
package main
import (
"fmt"
"log"
"os"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"gopkg.in/mgo.v2/gridfs"
)
func main() {
// MongoDB সার্ভারে কানেক্ট করা
session, err := mgo.Dial("localhost")
if err != nil {
log.Fatal(err)
}
defer session.Close()
// MongoDB ডাটাবেসের সাথে কাজ করা
db := session.DB("test_db")
// GridFS সংগ্রহটি খোলা
gridFS, err := gridfs.New(db)
if err != nil {
log.Fatal(err)
}
// ফাইলটি খোলা
file, err := os.Open("largefile.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
// ফাইলটি GridFS এ আপলোড করা
uploadedFile, err := gridFS.Create("largefile.txt")
if err != nil {
log.Fatal(err)
}
// ফাইল ডেটা GridFS এ লিখা
_, err = uploadedFile.WriteFile(file)
if err != nil {
log.Fatal(err)
}
fmt.Println("File uploaded successfully!")
}
এখানে, largefile.txt
ফাইলটি GridFS এ আপলোড করা হচ্ছে। gridfs.New
ব্যবহার করে GridFS সিস্টেম তৈরি করা হচ্ছে এবং Create
ব্যবহার করে একটি নতুন ফাইল GridFS এ আপলোড করা হচ্ছে।
GridFS থেকে ফাইল ডাউনলোড করতে Open
ব্যবহার করা হয়। এটি ফাইলটি fs.files
থেকে খুঁজে বের করে এবং তার অংশগুলো fs.chunks
থেকে পুনরুদ্ধার করে।
Golang Example:
package main
import (
"fmt"
"log"
"os"
"github.com/globalsign/mgo"
"gopkg.in/mgo.v2/gridfs"
)
func main() {
// MongoDB সার্ভারে কানেক্ট করা
session, err := mgo.Dial("localhost")
if err != nil {
log.Fatal(err)
}
defer session.Close()
// MongoDB ডাটাবেসের সাথে কাজ করা
db := session.DB("test_db")
// GridFS সংগ্রহটি খোলা
gridFS, err := gridfs.New(db)
if err != nil {
log.Fatal(err)
}
// ফাইলটি GridFS থেকে ডাউনলোড করা
file, err := gridFS.Open("largefile.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
// ডাউনলোড করা ফাইলটি লোকাল ফাইল সিস্টেমে সংরক্ষণ করা
outFile, err := os.Create("downloaded_largefile.txt")
if err != nil {
log.Fatal(err)
}
defer outFile.Close()
// GridFS থেকে ফাইল লেখানো হচ্ছে
_, err = outFile.Write([]byte(file.Data()))
if err != nil {
log.Fatal(err)
}
fmt.Println("File downloaded successfully!")
}
এখানে, largefile.txt
ফাইলটি MongoDB থেকে GridFS সিস্টেমের মাধ্যমে ডাউনলোড করা হচ্ছে এবং স্থানীয় ফাইল সিস্টেমে সংরক্ষিত হচ্ছে।
MongoDB এর GridFS একটি শক্তিশালী ফিচার যা MongoDB ডেটাবেসে বড় ফাইল (যেমন ইমেজ, ভিডিও, অডিও, ডকুমেন্ট) সংরক্ষণ এবং পরিচালনার জন্য ব্যবহৃত হয়। MongoDB এর সাধারণ স্টোরেজ সিস্টেম 16MB পর্যন্ত ফাইল সংরক্ষণ করতে পারে, তবে GridFS বড় ফাইলকে ছোট ছোট অংশে ভাগ করে সংরক্ষণ এবং পুনরুদ্ধার করে। এটি MongoDB তে বড় ফাইল স্টোরেজ এবং ফাইল সিস্টেম ফিচার সংযুক্ত করতে সাহায্য করে, যা দ্রুত অ্যাক্সেস এবং উচ্চ স্কেলযোগ্যতা প্রদান করে।
GridFS হল MongoDB তে বড় ফাইল যেমন ছবি, ভিডিও, অডিও, ডকুমেন্ট ইত্যাদি স্টোর করার জন্য ব্যবহৃত একটি সিস্টেম। MongoDB সাধারণত BSON (Binary JSON) ফরম্যাটে ডেটা স্টোর করে, কিন্তু BSON এর আকার সীমিত (16MB পর্যন্ত)। তাই বড় ফাইলগুলো স্টোর করার জন্য MongoDB GridFS ব্যবহার করা হয়। GridFS MongoDB তে একটি স্টোরেজ সিস্টেম যা ফাইলগুলোকে ছোট ছোট অংশে ভাগ করে (chunks) এবং এগুলোকে দুটি পৃথক কালেকশনে স্টোর করে।
MongoDB তে GridFS ফাইলগুলিকে দুটি আলাদা কালেকশনে ভাগ করে:
যখন আপনি একটি বড় ফাইল MongoDB তে আপলোড করেন, MongoDB GridFS এই ফাইলটি ছোট ছোট অংশে ভাগ করে এবং প্রতিটি অংশকে fs.chunks
কালেকশনে স্টোর করে, এবং মেটাডেটা fs.files
কালেকশনে সংরক্ষণ করে।
GridFS তে বড় ফাইল স্টোর করার জন্য এবং পুনরুদ্ধারের জন্য কিছু নির্দিষ্ট ধাপ রয়েছে:
GridFS ব্যবহারের সময় প্রথমে ফাইলটি ছোট ছোট অংশে (chunks) ভাগ করা হয়, এবং এই অংশগুলো fs.chunks
কালেকশনে সংরক্ষিত হয়। ফাইলের মেটাডেটা যেমন নাম, সাইজ ইত্যাদি fs.files
কালেকশনে সংরক্ষিত থাকে।
ফাইলটি পুনরুদ্ধার করার সময় GridFS ফাইলের অংশগুলো (chunks) একত্রিত করে এবং একটি পূর্ণাঙ্গ ফাইল হিসেবে তৈরি করে। MongoDB স্বয়ংক্রিয়ভাবে ফাইলের অংশগুলো সংগঠিত করে এবং একত্রে পুনরুদ্ধার করে।
MongoDB তে GridFS ব্যবহারের জন্য Node.js ড্রাইভার ব্যবহার করা যেতে পারে। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে একটি ফাইল GridFS তে আপলোড এবং ডাউনলোড করা হচ্ছে:
const { MongoClient, GridFSBucket } = require('mongodb');
const fs = require('fs');
async function uploadFile() {
const client = new MongoClient('mongodb://localhost:27017', { useUnifiedTopology: true });
await client.connect();
const db = client.db('testDB');
const bucket = new GridFSBucket(db);
const uploadStream = bucket.openUploadStream('example.jpg');
const fileStream = fs.createReadStream('example.jpg');
fileStream.pipe(uploadStream).on('finish', () => {
console.log('File uploaded successfully');
client.close();
});
}
uploadFile().catch(console.error);
এটি example.jpg নামক ফাইলটি MongoDB তে আপলোড করবে এবং GridFS এর মাধ্যমে সেই ফাইলটি স্টোর করবে।
const { MongoClient, GridFSBucket } = require('mongodb');
const fs = require('fs');
async function downloadFile() {
const client = new MongoClient('mongodb://localhost:27017', { useUnifiedTopology: true });
await client.connect();
const db = client.db('testDB');
const bucket = new GridFSBucket(db);
const downloadStream = bucket.openDownloadStreamByName('example.jpg');
const fileStream = fs.createWriteStream('downloaded_example.jpg');
downloadStream.pipe(fileStream).on('finish', () => {
console.log('File downloaded successfully');
client.close();
});
}
downloadFile().catch(console.error);
এটি example.jpg ফাইলটি GridFS থেকে ডাউনলোড করে এবং downloaded_example.jpg নামে সংরক্ষণ করবে।
এ কারণে, GridFS ব্যবহারের আগে অবশ্যই আপনার সিস্টেমের প্রয়োজনীয়তা এবং ফাইল সাইজ সম্পর্কে চিন্তা করা উচিত।
GridFS MongoDB তে বড় ফাইল স্টোর করার জন্য ব্যবহৃত একটি শক্তিশালী ফিচার, যা ফাইলটিকে ছোট ছোট অংশে ভাগ করে এবং এগুলোকে MongoDB ডেটাবেসে সংরক্ষণ করে। GridFS ডেটার ব্যাকআপ, রিস্টোর এবং দ্রুত অ্যাক্সেসের জন্য একটি কার্যকরী সিস্টেম সরবরাহ করে, এবং MongoDB ব্যবহারকারীকে ফাইল ম্যানেজমেন্টের জন্য একটি সহজ এবং স্কেলযোগ্য সমাধান দেয়।
MongoDB তে GridFS হল একটি ফিচার যা বড় ফাইল যেমন ইমেজ, ভিডিও, অডিও বা অন্যান্য মিডিয়া ফাইল MongoDB ডেটাবেসে সংরক্ষণ করার জন্য ব্যবহৃত হয়। MongoDB একটি ডকুমেন্ট-ভিত্তিক ডেটাবেস, এবং এটি স্বাভাবিকভাবেই বড় বাইনারি ফাইল বা ব্লব (BLOB) ধারণ করতে সক্ষম নয়, কিন্তু GridFS ফিচারটি ফাইলগুলিকে ছোট ছোট অংশে ভাগ করে সংরক্ষণ করার মাধ্যমে এই সীমাবদ্ধতা অতিক্রম করে।
GridFS ফাইলগুলোকে দুটি ভাগে বিভক্ত করে:
GridFS MongoDB তে খুবই উপকারী যখন বড় ডেটা সংরক্ষণ এবং তারপরে পুনরুদ্ধার করা প্রয়োজন।
MongoDB তে GridFS ব্যবহারের জন্য প্রথমে mongodb
এবং gridfs-stream
লাইব্রেরি ইনস্টল করতে হবে। GridFS-কে Node.js এর সাথে ব্যবহার করতে, আপনি gridfs-stream
ব্যবহার করতে পারেন।
npm install gridfs-stream mongoose
MongoDB তে বড় ফাইল সংরক্ষণের জন্য gridfs-stream
ব্যবহার করতে হবে, যা MongoDB এর সাথে স্ট্রিমিং এর মাধ্যমে ফাইল সংরক্ষণ করতে সহায়তা করে। এখানে একটি উদাহরণ দেওয়া হলো, যেখানে একটি ইমেজ ফাইল MongoDB তে GridFS ব্যবহারের মাধ্যমে আপলোড করা হয়েছে।
const mongoose = require('mongoose');
const Grid = require('gridfs-stream');
const fs = require('fs');
const path = require('path');
const { MongoClient } = require('mongodb');
// MongoDB এর URI দিয়ে সংযোগ করুন
const uri = 'mongodb://localhost:27017/mydatabase';
const conn = mongoose.createConnection(uri, { useNewUrlParser: true, useUnifiedTopology: true });
let gfs;
conn.once('open', () => {
// GridFS ইন্সট্যান্স তৈরি করুন
gfs = Grid(conn.db, mongoose.mongo);
gfs.collection('uploads'); // এখানে uploads হলো ফাইলের কালেকশন নাম
});
// ফাইল আপলোড করার জন্য
const uploadFile = (filePath) => {
const readStream = fs.createReadStream(filePath);
const filename = path.basename(filePath);
const writeStream = gfs.createWriteStream({
filename: filename,
content_type: 'image/jpeg', // ফাইলের টাইপ
});
readStream.pipe(writeStream);
writeStream.on('close', (file) => {
console.log('ফাইল আপলোড সফল:', file);
});
};
// ফাইল আপলোড করুন
uploadFile('path/to/your/largefile.jpg');
এখানে:
createWriteStream
GridFS এর মাধ্যমে MongoDB তে ফাইল সংরক্ষণ করে।fs.createReadStream
ফাইলের কনটেন্ট পড়ে এবং pipe
ব্যবহার করে ফাইলটি MongoDB তে স্ট্রিম করে সংরক্ষণ করা হয়।MongoDB থেকে একটি ফাইল পুনরুদ্ধার করতে আপনি gridfs-stream
এর createReadStream
ব্যবহার করতে পারেন। এটি MongoDB ডেটাবেস থেকে ফাইল পড়ার জন্য স্ট্রিমিং ব্যবহার করে।
const downloadFile = (filename) => {
gfs.files.findOne({ filename: filename }, (err, file) => {
if (err) {
console.log('ফাইল খুঁজে পাওয়া যায়নি:', err);
return;
}
if (!file) {
console.log('ফাইল পাওয়া যায়নি');
return;
}
const readStream = gfs.createReadStream({ filename: file.filename });
const writeStream = fs.createWriteStream(path.join(__dirname, 'downloads', file.filename));
readStream.pipe(writeStream);
writeStream.on('close', () => {
console.log('ফাইল ডাউনলোড সফল:', file.filename);
});
});
};
// ফাইল ডাউনলোড করুন
downloadFile('largefile.jpg');
এখানে:
gfs.createReadStream
MongoDB থেকে GridFS ফাইলের কনটেন্ট স্ট্রিম করে এবং একটি লোকাল ফাইলে লেখে।pipe
ব্যবহার করে ফাইলটি ডাউনলোড করা হয় এবং লোকাল ডিরেক্টরিতে সংরক্ষণ করা হয়।MongoDB তে GridFS ব্যবহার করে বড় ফাইল যেমন ইমেজ, ভিডিও বা অন্যান্য মিডিয়া ফাইল সহজে সংরক্ষণ এবং পুনরুদ্ধার করা যায়। এটি MongoDB তে ডেটা স্টোর করতে ব্যবহৃত সাধারণ ডকুমেন্ট স্টোরেজের সীমাবদ্ধতা অতিক্রম করে এবং ফাইলগুলিকে ছোট অংশে ভাগ করে ডেটাবেসে সংরক্ষণ করে। Node.js এর সাথে GridFS ব্যবহার করে আপনি ফাইল আপলোড, ডাউনলোড এবং ম্যানেজ করতে পারবেন। GridFS এর মাধ্যমে MongoDB তে বড় ডেটা সঞ্চালন এবং স্টোরেজ অনেক সহজ হয়ে যায়।
MongoDB তে GridFS একটি ফাইল স্টোরেজ সিস্টেম, যা MongoDB ডেটাবেসে বড় আকারের ফাইল (যেমন ইমেজ, ভিডিও, পিডিএফ) সংরক্ষণ করতে ব্যবহৃত হয়। সাধারণত MongoDB তে ডেটা ডকুমেন্ট আকারে স্টোর করা হয়, কিন্তু যখন ফাইল বড় আকারের হয়, তখন MongoDB এর ডকুমেন্ট সাইজ সীমার (16MB) কারণে তা সরাসরি স্টোর করা সম্ভব নয়। এই সমস্যা সমাধানে GridFS ব্যবহার করা হয়, যা ফাইলগুলিকে ছোট ছোট অংশে (chunks) ভাগ করে MongoDB তে সঞ্চয় করে।
MongoDB তে GridFS ব্যবহারের মাধ্যমে বড় ফাইলগুলি সহজে MongoDB ডেটাবেসে সংরক্ষণ এবং পুনরুদ্ধার করা সম্ভব।
fs.chunks
) এই অংশগুলো সঞ্চয় করে।fs.files
)।GridFS MongoDB ডেটাবেসে এই দুটি কালেকশন ব্যবহার করে ডেটা সংরক্ষণ এবং পরিচালনা করে।
MongoDB তে GridFS ব্যবহার করার জন্য Mongoose অথবা MongoDB ড্রাইভার ব্যবহার করা যেতে পারে। নিচে GridFS এর কিছু গুরুত্বপূর্ণ API গুলি আলোচনা করা হয়েছে:
ফাইল MongoDB ডেটাবেসে আপলোড করার জন্য GridFSBucket
ব্যবহার করা হয়।
উদাহরণ (Node.js এবং MongoDB ড্রাইভার ব্যবহার করে):
const { MongoClient, GridFSBucket } = require('mongodb');
const fs = require('fs');
const path = require('path');
// MongoDB URI এবং ডাটাবেস কনফিগারেশন
const uri = 'mongodb://localhost:27017';
const dbName = 'mydatabase';
async function uploadFile() {
const client = new MongoClient(uri);
try {
await client.connect();
const db = client.db(dbName);
const bucket = new GridFSBucket(db);
const filePath = path.join(__dirname, 'largefile.txt'); // ফাইলের পথ
const uploadStream = bucket.openUploadStream('largefile.txt'); // ফাইল নাম
const fileStream = fs.createReadStream(filePath);
fileStream.pipe(uploadStream)
.on('error', (err) => {
console.log("Error uploading file:", err);
})
.on('finish', () => {
console.log('File uploaded successfully!');
});
} catch (error) {
console.error("Error:", error);
} finally {
await client.close();
}
}
uploadFile();
এখানে fs.createReadStream()
ব্যবহার করে ফাইল স্ট্রিম করা হয় এবং bucket.openUploadStream()
ব্যবহার করে MongoDB ডেটাবেসে ফাইলটি আপলোড করা হয়।
ফাইল ডাউনলোড করতে GridFSBucket
এর openDownloadStreamByName
বা openDownloadStream
ব্যবহার করা হয়।
উদাহরণ:
async function downloadFile(fileName) {
const client = new MongoClient(uri);
try {
await client.connect();
const db = client.db(dbName);
const bucket = new GridFSBucket(db);
const downloadStream = bucket.openDownloadStreamByName(fileName);
const writeStream = fs.createWriteStream(path.join(__dirname, 'downloaded_' + fileName));
downloadStream.pipe(writeStream)
.on('error', (err) => {
console.log("Error downloading file:", err);
})
.on('finish', () => {
console.log('File downloaded successfully!');
});
} catch (error) {
console.error("Error:", error);
} finally {
await client.close();
}
}
downloadFile('largefile.txt');
এখানে openDownloadStreamByName()
ব্যবহার করে MongoDB ডেটাবেস থেকে ফাইলটি ডাউনলোড করা হয় এবং fs.createWriteStream()
দিয়ে সেটি ফাইল হিসেবে স্টোর করা হয়।
ফাইলের মেটাডেটা যেমন নাম, আকার, টাইপ ইত্যাদি পাওয়ার জন্য fs.files
কালেকশন ব্যবহার করা হয়।
উদাহরণ:
async function getFileMetadata(fileName) {
const client = new MongoClient(uri);
try {
await client.connect();
const db = client.db(dbName);
const filesCollection = db.collection('fs.files');
const file = await filesCollection.findOne({ filename: fileName });
console.log("File Metadata:", file);
} catch (error) {
console.error("Error retrieving file metadata:", error);
} finally {
await client.close();
}
}
getFileMetadata('largefile.txt');
এটি ফাইলের মেটাডেটা যেমন ফাইলের নাম, আকার, আপলোডের তারিখ ইত্যাদি প্রদান করবে।
MongoDB তে GridFS ব্যবহার করে বড় ফাইলগুলি ডেটাবেসে সঞ্চয় এবং পরিচালনা করা যায়। GridFS ফাইলগুলোকে ছোট ছোট অংশে ভাগ করে এবং MongoDB এর fs.chunks
এবং fs.files
কালেকশনগুলোতে সঞ্চয় করে। API গুলি ব্যবহার করে MongoDB তে ফাইল আপলোড, ডাউনলোড, এবং মেটাডেটা সংগ্রহ করা যায়। MongoDB GridFS বিশেষভাবে বড় ফাইলের জন্য উপযোগী, যা MongoDB ডেটাবেসে স্টোরেজ করতে সমস্যা সৃষ্টি করতে পারে। GridFS এর মাধ্যমে বড় ফাইলও MongoDB ডেটাবেসে সহজে সংরক্ষণ এবং ব্যবস্থাপনা করা যায়।
GridFS হল MongoDB এর একটি ফিচার, যা বড় ডেটা ফাইল (যেমন: ইমেজ, ভিডিও, অডিও ফাইল, ডকুমেন্ট ইত্যাদি) MongoDB ডেটাবেসে সঞ্চয় করার জন্য ব্যবহৃত হয়। MongoDB এর সাধারণ ডেটাবেস স্টোরেজ ব্যবস্থা ডেটার জন্য একক ডকুমেন্টের আকার 16MB পর্যন্ত সীমাবদ্ধ, কিন্তু GridFS এই সীমা ছাড়িয়ে ১৬MB এর বেশি ফাইল সঞ্চয় করতে সক্ষম। GridFS ফাইলগুলোকে ছোট ছোট চাঙ্কস (এছাড়া, বড় ফাইলগুলো ডেটাবেসে স্টোর করতে পারফরম্যান্স ভালো রাখতে এই পদ্ধতি ব্যবহার করা হয়) এ ভাগ করে ডেটাবেসে সংরক্ষণ করে।
এখানে GridFS এর পারফরম্যান্স এবং সীমাবদ্ধতা নিয়ে বিস্তারিত আলোচনা করা হলো।
GridFS ব্যবহারের সুবিধা কিছুক্ষেত্রে পারফরম্যান্স বৃদ্ধি করতে পারে, তবে কিছু ক্ষেত্রে পারফরম্যান্সের অভাবও দেখা যেতে পারে।
Indexing: GridFS ফাইলগুলির জন্য ইনডেক্স তৈরি করা, বিশেষ করে ফাইলের filename
এবং uploadDate
ফিল্ডের জন্য, কুয়েরি পারফরম্যান্স বাড়াতে সাহায্য করতে পারে।
db.fs.files.createIndex({ filename: 1 });
db.fs.files.createIndex({ uploadDate: 1 });
GridFS অনেক সুবিধা প্রদান করলেও, এর কিছু সীমাবদ্ধতা রয়েছে, যা বিশেষ করে বড় পরিসরে ডেটা ব্যবস্থাপনায় সমস্যা সৃষ্টি করতে পারে।
MongoDB তে GridFS ব্যবহার করে ফাইল আপলোড ও ডাউনলোড খুবই সহজ।
ফাইল আপলোড (Node.js উদাহরণ):
const { MongoClient, GridFSBucket } = require('mongodb');
const fs = require('fs');
const client = new MongoClient('mongodb://localhost:27017');
const db = client.db('mydb');
const bucket = new GridFSBucket(db);
fs.createReadStream('path_to_file')
.pipe(bucket.openUploadStream('filename'))
.on('finish', () => {
console.log('File uploaded');
});
ফাইল ডাউনলোড (Node.js উদাহরণ):
const { MongoClient, GridFSBucket } = require('mongodb');
const fs = require('fs');
const client = new MongoClient('mongodb://localhost:27017');
const db = client.db('mydb');
const bucket = new GridFSBucket(db);
const downloadStream = bucket.openDownloadStreamByName('filename');
downloadStream.pipe(fs.createWriteStream('path_to_downloaded_file'))
.on('finish', () => {
console.log('File downloaded');
});
MongoDB GridFS বড় ফাইল সঞ্চয় এবং স্ট্রিমিংয়ের জন্য একটি শক্তিশালী প্রযুক্তি, তবে এর কিছু সীমাবদ্ধতা রয়েছে। GridFS ব্যবহারের মাধ্যমে MongoDB ডেটাবেসে 16MB এর বেশি ফাইল সঞ্চয় করা সম্ভব, তবে এর পারফরম্যান্স এবং ব্যবস্থাপনা কৌশলগুলি সঠিকভাবে ব্যবহৃত হলে তার কার্যকারিতা বাড়ানো যায়। ইনডেক্সিং, ব্যাচ প্রসেসিং এবং কুয়েরি অপ্টিমাইজেশন মাধ্যমে GridFS ব্যবহারকারীদের দ্রুত ফাইল অ্যাক্সেস নিশ্চিত করতে সাহায্য করতে পারে, তবে অনেক বড় ফাইল বা পরিমাণবহুল ফাইল সিস্টেমে কিছু পারফরম্যান্স সমস্যা হতে পারে।
Read more